package com.game.utils;

import com.game.config.Config;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.util.Log;

public class GameSoundManager {
	public static GameSoundManager instance;
	public final int soundQuality=100;
	public MediaPlayer bgMusic;
	public SoundPool sound;
	public int[] sound_tag;
	public AudioManager audioManager;
	public Activity context;
	
	public GameSoundManager(Activity context) {
		Log.i("infos", "初始化GameSoundManager");
		this.context=context;
		instance=this;
	}
	
	/**
	 * 加载背景音乐*/
	public void loadBgMusic(int rawId){
		removeBgMusic();
		bgMusic=MediaPlayer.create(context, rawId);
		//设置循环播放
		bgMusic.setLooping(true);
		//开始播放
		palyMusic();
	}
	
	/**
	 * 移除背景音乐*/
	public void removeBgMusic(){
		if(bgMusic!=null){
			bgMusic.stop();
			bgMusic.release();
			bgMusic=null;
			System.gc();
		}
	}
	
	/**
	 * 暂停播放背景音*/
	public void pauseMusic(){
		Log.i("infos", "暂停背景音");
		if(bgMusic!=null){
			if(bgMusic.isPlaying()){
				bgMusic.pause();
			}
		}
	}
	
	/**
	 * 播放背景音*/
	public void palyMusic(){
		Log.i("infos", "播放背景音");
		//判断声音是否开启
		if(Config.isSoundOn()){
			Log.i("infos", "声音已开启");
			if(bgMusic!=null){
				Log.i("infos", "有背景音");
				if(!bgMusic.isPlaying()){
					bgMusic.start();	
				}
			}
		}
	}
	
	/**
	 * 把声音加载到soundPool中
	 * @param rawIds 声音文件id*/
	public void loadSounds(int[] rawIds){
		if(sound!=null){
			sound.release();
			sound_tag=null;
			sound=null;
			System.gc();
		}
		//第一个参数 同时播放的最多声音个数
		//第二个参数声音的类型
		//第三个参数声音的品质
		sound=new SoundPool(4,AudioManager.STREAM_MUSIC,soundQuality);
		sound_tag=new int[rawIds.length];
		/*加载声音*/
		for(int i=0,j=rawIds.length;i<j;i++){
			sound_tag[i]=sound.load(context, rawIds[i], 1);
		}
	}
	
	/**
	 * 播放游戏音效
	 * 默认播放一次
	 * 默认速率正常*/
	public void playSound(int index){
		//判断声音是否开启
		if(Config.isSoundOn()){
			playSound(index,1,0, 1.0f);
		}
	}
	
	/**
	 * 播放游戏音效
	 * @param index sound_tag的下标
	 * @param priority 优先级  0最低
	 * @param loopTime 循环次数 -1无限 0一次 
	 * @param speed 播放速率 0.5~2.0 1.0为正常
	 * */
	public void playSound(int index,int priority,int loopTime,float speed){
		if(sound!=null){
			sound.play(sound_tag[index], 1f, 1f, priority, loopTime, speed);
		}
	}
	
	/*判断声音是否开启*/
	public boolean isSoundOn(){
		return Config.isSoundOn();
	}
}